package com.source.lightfowl.basedata.service;

import com.source.lightfowl.VO.StallsVO;
import com.source.lightfowl.basedata.entity.Stalls;
import org.springframework.data.domain.Page;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
import java.util.Optional;

/**
 * @Author: cxy
 * @Description: 屠宰档口信息业务层接口
 */
public interface StallsService extends UploadExcelService {

    List<Object> findAllDTO();
    void save(List<Object> list, HttpServletRequest request);

    //3.3查
    List<StallsVO> findAll(int state);
    //3.2查 分页
    Page<Stalls> findAllPage(int page, int pageNum);
    Page<StallsVO> findAllPageVO(Integer state, int page, int pageNum);
    //3.1查找根据id查找
    Optional<Stalls> findById(Integer id);
    StallsVO findByIdVO(Integer id);

    //1.增 或者改
    void save(Stalls sh, MultipartFile file, HttpServletRequest request);

    void save(Stalls sh);

    //2.1删
    void deleteById(Integer id);
    //2.2批量删
    void deleteBatch(String ids);

    Stalls findByBarcodeMachineId(String s);

    //这个方法是查询详情用的 本来查询详情是使用第一个版本  但是需要添加一些字段 所以需要返回vo 改了vo之后发现别的地方也使用到这个方法 所以原来的方法返回类型不能修改了 否则要大改。所以添加个方法 查询详情
    public StallsVO findByIdVersion2(Integer id);

    public List<StallsVO> getByLikeName(String name);

    void changeBatch(int state, String ids);

    List<String> findByUserId(String userId);

    BigInteger dailyRecord(Integer id);

    BigInteger weeklyRecord(Integer id);

    BigInteger monthlyRecord(Integer id);

    List<Map<String,BigInteger>> dailyRecordByPoultry(Integer id);

    List<Map<String, BigInteger>> weeklyRecordByPoultry(Integer id);

    List<Map<String,BigInteger>> monthlyRecordByPoultry(Integer id);

    List<Map<Object,Object>> dailyRecordByPoultryAndToMark(Integer id);

    List<Map<Object,Object>> weeklyRecordByPoultryAndToMark(Integer id);

    List<Map<Object,Object>> monthlyRecordByPoultryAndToMark(Integer id);
}
